# Что делает функция asyncio.sleep()?
# Приостанавливает выполнение текущей корутины на указанное количество секунд,
# позволяя циклу событий обрабатывать другие задачи.
##########################################
#Что возвращает функция asyncio.sleep(), если параметр result не задан явным образом?
#Возвращает None
###########################################
#В каких ситуациях может быть полезна функция asyncio.sleep()?
# При ограничении скорости запросов.

# При необходимости снижения загруженности.

# При тестировании асинхронного кода.
###################################################
#Блокирует ли функция asyncio.sleep() основной поток выполнения программы?
#Нет, она только приостанавливает выполнение текущей корутины.

#Что произойдет, если мы укажем значение delay равным 0.1 секунды в функции asyncio.sleep()?
# Выполнение корутины может быть приостановлено на более длительное время из-за переключения
# между задачами или других факторов.
##############################################
#Как asyncio.sleep() влияет на обработку других корутин в цикле событий?
#Позволяет циклу событий продолжать обработку других корутин, пока текущая корутина находится в режиме ожидания.
####################################################
#В чем разница между time.sleep() и asyncio.sleep() при работе с асинхронным кодом?
#В чем разница между time.sleep() и asyncio.sleep() при работе с асинхронным кодом?
##################################
# import asyncio

# async def coroutine_1():
#     print("Первое сообщение от корутины 1")
#     await asyncio.sleep(3)  # Подберите необходимую задержку
#     print("Второе сообщение от корутины 1")

# async def coroutine_2():
#     print("Первое сообщение от корутины 2")
#     await asyncio.sleep(2)  # Подберите необходимую задержку
#     print("Второе сообщение от корутины 2")

# async def coroutine_3():
#     print("Первое сообщение от корутины 3")
#     await asyncio.sleep(1)  # Подберите необходимую задержку
#     print("Второе сообщение от корутины 3")

# async def main():
#     await asyncio.gather(
#         coroutine_1(),
#         coroutine_2(),
#         coroutine_3(),
#     )

# asyncio.run(main())
# import asyncio
# import time

# start = time.perf_counter()
# async def coroutine_1(delay=0.1):
#     print("Первое сообщение от корутины 1")
#     await asyncio.sleep(delay*2)  # Первая задержка
#     print("Второе сообщение от корутины 1")
#     await asyncio.sleep(delay)  # Вторая задержка
#     print("Третье сообщение от корутины 1")
#     await asyncio.sleep(delay)  # Третья задержка
#     print("Четвертое сообщение от корутины 1")

# async def coroutine_2(delay=0.1):
#     print("Первое сообщение от корутины 2")
#     await asyncio.sleep(delay*1.5)  # Третья задержка
#     print("Второе сообщение от корутины 2")
#     await asyncio.sleep(delay)  # Первая задержка
#     print("Третье сообщение от корутины 2")
#     await asyncio.sleep(delay*2)  # Вторая задержка
#     print("Четвертое сообщение от корутины 2")
    
    


# async def coroutine_3(delay=0.1):
#     print("Первое сообщение от корутины 3")
#     await asyncio.sleep(delay)  # Третья задержка
#     print("Второе сообщение от корутины 3")
#     await asyncio.sleep(delay*1.6)  # Первая задержка
#     print("Третье сообщение от корутины 3")
#     await asyncio.sleep(delay*1.5)  # Вторая задержка
#     print("Четвертое сообщение от корутины 3")
    

 

# async def main():
#     await asyncio.gather(
#         coroutine_1(),
#         coroutine_2(),
#         coroutine_3(),
#     )

# asyncio.run(main())
# print(time.perf_counter() - start)
import asyncio

async def coroutine_1():
    await asyncio.sleep(1)  # Задержка для первого сообщения
    print("Сообщение 1 от корутины 1")
    await asyncio.sleep(1.6)  # Задержка для второго сообщения
    print("Сообщение 2 от корутины 1")

async def coroutine_2():
    await asyncio.sleep(1.1)
    print("Сообщение 1 от корутины 2")
    await asyncio.sleep(1.7)
    print("Сообщение 2 от корутины 2")

async def coroutine_3():
    await asyncio.sleep(1.2)
    print("Сообщение 1 от корутины 3")
    await asyncio.sleep(1.8)
    print("Сообщение 2 от корутины 3")

async def coroutine_4():
    await asyncio.sleep(1.3)
    print("Сообщение 1 от корутины 4")
    await asyncio.sleep(1.9)
    print("Сообщение 2 от корутины 4")

async def coroutine_5():
    await asyncio.sleep(1.4)
    print("Сообщение 1 от корутины 5")
    await asyncio.sleep(2)
    print("Сообщение 2 от корутины 5")

async def coroutine_6():
    await asyncio.sleep(1.5)
    print("Сообщение 1 от корутины 6")
    await asyncio.sleep(2.1)
    print("Сообщение 2 от корутины 6")

async def main():
    await asyncio.gather(
        coroutine_1(),
        coroutine_2(),
        coroutine_3(),
        coroutine_4(),
        coroutine_5(),
        coroutine_6(),
    )

asyncio.run(main())